@@ -2,6 +2,9 @@ |
||
2 | 2 |
|
3 | 3 |
from __future__ import division |
4 | 4 |
|
5 |
+import json |
|
6 |
+ |
|
7 |
+import requests |
|
5 | 8 |
from django.db.models import Q |
6 | 9 |
from django_logit import logit |
7 | 10 |
from django_query import get_query_value |
@@ -23,15 +26,48 @@ def eqpt_bind(request): |
||
23 | 26 |
|
24 | 27 |
macidsns = macidsns or [{'macid': macid, 'sn': sn}] |
25 | 28 |
|
29 |
+ headers = { |
|
30 |
+ 'Content-Type': 'application/json', |
|
31 |
+ 'Partner-Identifier': 'yingduo', |
|
32 |
+ 'Partner-Token': '9A79C0E34C72B4D0F9B5EA0C59FFC52A', |
|
33 |
+ } |
|
34 |
+ |
|
26 | 35 |
for macidsn in macidsns: |
27 | 36 |
macid, sn = macidsn.get('macid'), macidsn.get('sn') |
37 |
+ |
|
38 |
+ data = { |
|
39 |
+ 'mac': macid, |
|
40 |
+ 'callback': 'http://twjc.kodo.com.cn/api/upload/temperature', |
|
41 |
+ } |
|
42 |
+ # 设备注册成功 |
|
43 |
+ # { |
|
44 |
+ # "ret": "SUCCESS", |
|
45 |
+ # "data": { |
|
46 |
+ # "id": 6, |
|
47 |
+ # "callback": "http://twjc.kodo.com.cn/api/upload/temperature", |
|
48 |
+ # "mac": "C4:64:E3:7A:EF:A8" |
|
49 |
+ # }, |
|
50 |
+ # "debug": "" |
|
51 |
+ # } |
|
52 |
+ # |
|
53 |
+ # 设备注册失败 |
|
54 |
+ # { |
|
55 |
+ # "ret": "FAIL", |
|
56 |
+ # "data": "该设备已被注册!", |
|
57 |
+ # "debug": "" |
|
58 |
+ # } |
|
59 |
+ try: |
|
60 |
+ result = requests.post('http://www.protontek.com/vcare-api/open/device/register', headers=headers, data=json.dumps(data)).json() |
|
61 |
+ except Exception as e: |
|
62 |
+ result = {'message': e.args} |
|
63 |
+ |
|
28 | 64 |
ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={ |
29 | 65 |
'point_id': point_id, |
30 | 66 |
'sn': sn, |
67 |
+ 'eqpt_register_status': int(result.get('ret') == 'SUCCESS' or result.get('data') == '该设备已被注册!'), |
|
68 |
+ 'eqpt_register_result': result, |
|
31 | 69 |
}) |
32 | 70 |
|
33 |
- # TODO: Call CarePatch's API, batch or single |
|
34 |
- |
|
35 | 71 |
return response() |
36 | 72 |
|
37 | 73 |
|
@@ -12,7 +12,7 @@ class IsolationPointInfoAdmin(admin.ModelAdmin): |
||
12 | 12 |
|
13 | 13 |
|
14 | 14 |
class ThermometerEquipmentInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin): |
15 |
- list_display = ('eqpt_id', 'point_id', 'macid', 'sn', 'active_status', 'active_at', 'name', 'sex', 'age', 'phone', 'remark', 'last_submit_at', 'status', 'updated_at', 'created_at') |
|
15 |
+ list_display = ('eqpt_id', 'point_id', 'macid', 'sn', 'active_status', 'active_at', 'name', 'sex', 'age', 'phone', 'remark', 'last_submit_at', 'eqpt_register_status', 'eqpt_register_result', 'status', 'updated_at', 'created_at') |
|
16 | 16 |
list_filter = ('point_id', 'status') |
17 | 17 |
|
18 | 18 |
|
@@ -0,0 +1,23 @@ |
||
1 |
+# Generated by Django 3.2.4 on 2021-07-10 15:58 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('equipment', '0001_initial'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AddField( |
|
14 |
+ model_name='thermometerequipmentinfo', |
|
15 |
+ name='eqpt_register_result', |
|
16 |
+ field=models.TextField(blank=True, help_text='设备注册结果', null=True, verbose_name='eqpt_register_result'), |
|
17 |
+ ), |
|
18 |
+ migrations.AddField( |
|
19 |
+ model_name='thermometerequipmentinfo', |
|
20 |
+ name='eqpt_register_status', |
|
21 |
+ field=models.IntegerField(choices=[(1, '注册成功'), (0, '注册失败')], default=0, help_text='设备注册状态', verbose_name='eqpt_register_status'), |
|
22 |
+ ), |
|
23 |
+ ] |
@@ -51,6 +51,14 @@ class ThermometerEquipmentInfo(BaseModelMixin): |
||
51 | 51 |
(OFFLINE, '已离线'), |
52 | 52 |
) |
53 | 53 |
|
54 |
+ SUCCESS = 1 |
|
55 |
+ FAIL = 0 |
|
56 |
+ |
|
57 |
+ REGISTER_STATUE_TUPLE = ( |
|
58 |
+ (SUCCESS, '注册成功'), |
|
59 |
+ (FAIL, '注册失败'), |
|
60 |
+ ) |
|
61 |
+ |
|
54 | 62 |
eqpt_id = ShortUUIDField(_('eqpt_id'), max_length=32, blank=True, null=True, help_text='设备唯一标识', db_index=True, unique=True) |
55 | 63 |
|
56 | 64 |
point_id = models.CharField(_('point_id'), max_length=32, blank=True, null=True, help_text='隔离点唯一标识', db_index=True) |
@@ -71,6 +79,9 @@ class ThermometerEquipmentInfo(BaseModelMixin): |
||
71 | 79 |
|
72 | 80 |
last_submit_at = models.DateTimeField(_('last_submit_at'), blank=True, null=True, help_text=_('上一次上报时间')) |
73 | 81 |
|
82 |
+ eqpt_register_status = models.IntegerField(_('eqpt_register_status'), choices=REGISTER_STATUE_TUPLE, default=FAIL, help_text='设备注册状态') |
|
83 |
+ eqpt_register_result = models.TextField(_('eqpt_register_result'), blank=True, null=True, help_text='设备注册结果') |
|
84 |
+ |
|
74 | 85 |
class Meta: |
75 | 86 |
verbose_name = _('测温设备信息') |
76 | 87 |
verbose_name_plural = _('测温设备信息') |
@@ -95,6 +106,9 @@ class ThermometerEquipmentInfo(BaseModelMixin): |
||
95 | 106 |
'phone': self.phone or '', |
96 | 107 |
'remark': self.remark or '', |
97 | 108 |
'last_submit_at': tc.local_string(utc_dt=self.last_submit_at), |
109 |
+ 'eqpt_register_status': self.eqpt_register_status, |
|
110 |
+ 'eqpt_register_status_str': dict(self.REGISTER_STATUE_TUPLE).get(self.eqpt_register_status, ''), |
|
111 |
+ 'eqpt_register_result': self.eqpt_register_result, |
|
98 | 112 |
'created_at': tc.local_string(utc_dt=self.created_at), |
99 | 113 |
} |
100 | 114 |
|
@@ -3,6 +3,7 @@ furl==2.1.2 |
||
3 | 3 |
jsonfield==3.1.0 |
4 | 4 |
mysqlclient==2.0.3 |
5 | 5 |
pysnippets==1.1.4 |
6 |
+requests==2.25.1 |
|
6 | 7 |
rlog==0.3 |
7 | 8 |
-r requirements_dj.txt |
8 | 9 |
-r requirements_pywe.txt |